<?php
    $dir = dirname(__FILE__);
    require_once $dir.'/excel/excel.php';
    require_once $dir.'/excel/excel-ext.php';
    require_once $dir.'/source/GenericDAO.class.php';
    
    class Excel{
        private $objDAO;        
        public function __construct(){
            $this->objDAO = GenericDAO::getInstance();
        }
        //$tabla debe tener el atributo id_encuesta
        public function generarExcel($tabla){
            $resultado = $this->consultarDatos($tabla);
            $resultados = array_merge($resultado[0]['l'], $resultado[0]['m']);;
            
            $campos = array_keys($resultados);
            $titulo = '';
            //encabezado de tabla
            foreach($campos as $campo){
                 $titulo .=  sprintf('<th>%s</th>', str_replace('_',' ', utf8_encode(strtoupper(htmlspecialchars($campo)))));
            }            
            $encabezado = sprintf('<tr>%s</tr>',$titulo);
            //contenido de tabla
            $fila = '';
            foreach($resultado as $result){
                $registro = array_merge($result['l'], $result['m']);
                $contenido = '';
                foreach($registro as $dato){
                    $contenido .= sprintf('<td>%s</td>',$dato);
                }
                $fila = $fila.sprintf('<tr>%s</tr>', $contenido);
            }
            $return = sprintf('<table border=1>%s %s</table>', $encabezado, $fila);
            
            header("Content-type: application/vnd-ms-excel; charset=iso-8859-1");
            header("Content-Disposition: attachment; filename=".$tabla."_BD_".date('d-m-Y').".xls");
            header("Pragma: no-cache");
            header("Expires: 0");
            echo $return;
        }
        //select distinct * from mobil_f009_test as l JOIN datos_generales as m where l.id_encuesta = m.id_encuesta;
        private function consultarDatos($tabla){
            $options = array(
                'table' => 'datos_generales  as l JOIN '.$tabla.' as m',
                'fields' => 'distinct *',
                'limit' => '10000',
                'condition' => ' l.id_encuesta = m.id_encuesta '
            );
            return $this->objDAO->select($options);
        }
    }
    
    $excel = new Excel();
    $excel->generarExcel('mobil_f009_test');
?>
